#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <opencv2/opencv.hpp>
#include <QTimer>
#include <QImage>
#include <QPixmap>
#include <QMessageBox>
#include "MvCameraControl.h"
#include "ImageCaptureThread.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


private slots:
    void on_FindDevice_clicked();

    void on_OpenDevice_clicked();

    void on_bnStart_clicked();

    void on_CloseDevice_clicked();

    void on_bnStop_clicked();

    // 新增：处理线程发送的图像
    void onImageCaptured(const QImage& image);
    // 新增：处理线程发送的错误信息
    void onCaptureError(const QString& errorMsg);

    void onModeToggled(bool checked);


private:
    Ui::Widget *ui;

    MV_CC_DEVICE_INFO_LIST m_stDevList;

    bool m_bOpenDevice=false;
    bool m_isGrabbing = false;
    QTimer* m_timer;     // 定时从线程获取图像并更新UI

    std::string deviceModel;
    void *m_hDevHandle;

    ImageCaptureThread* m_captureThread; // 新增：图像采集线程


};
#endif // WIDGET_H
